package tables

// AmsPolicy 策略信息
type AmsPolicy struct {
	Id          int64  `json:"id,string" gorm:"primaryKey"`
	Name        string `json:"name"`
	Description string `json:"description"`
	ResCode     string `json:"resCode"`    // 对信息细节进行二次分流处理,策略下发时就需要标记好会返回的结果的内容，用string 是为了更好的使用反射调用处理方法
	CheckField  string `json:"checkField"` // 检查数据变化时需要考虑的字段，这里是对象的属性名，不是json的key。因为这段值会被反射调用,- 全量调用
	// 插件基础参数
	Cmd             string `json:"cmd"`             // 插件
	Args            string `json:"args"`            // 参数
	WorkSpace       string `json:"workspace"`       // 工作空间
	TimeoutDuration int    `json:"timeoutDuration"` // 超时时间

	//强制触发时机
	IsBoot  bool `json:"isBoot"`  // 是否需要在程序启动时强制触发策略，例如硬件类检测
	IsDial  bool `json:"isDial"`  // 是否需要在网络重连时强制触发策略，例如本地策略更新、IP地址检查等等
	IsLogin bool `json:"isLogin"` // 是否需要在登录系统会话时强制触发
	// 执行方式和影响范围
	Cycle       string `json:"cycle"`            // 执行间隔，month-月、week-周、day-天、hour-小时、minute-分钟
	Num         int    `json:"num"`              // 间隔数值
	Times       int    `json:"times"`            // 执行次数 1-一次性，2-周期性
	StartTime   int64  `json:"startTime,string"` // 开始时间，0表示无限制
	EndTime     int64  `json:"endTime,string"`   // 结束时间，0-无限制
	ImpactScope int    `json:"impactScope"`      // 受影响的范围，1-全局；2-指定设备

	CreatedAt int64 `json:"createdAt,string"`
}

func (r *AmsPolicy) TableName() string {
	return "ams_policy"
}
